//package com.iwhalecloud.bss.kite.cucc.web.service.accept.handler.module;
//
//import com.alibaba.fastjson.JSON;
//import com.iwhalecloud.bss.kite.client.dto.inst.InstAttrDTO;
//import com.iwhalecloud.bss.kite.client.vo.scene.CommonAttrVO;
//import com.iwhalecloud.bss.kite.client.vo.scene.ModuleVO;
//import com.iwhalecloud.bss.kite.common.constant.KeyConsts;
//import com.iwhalecloud.bss.kite.common.util.KiteBeanUtils;
//import com.iwhalecloud.bss.kite.common.util.KiteListUtils;
//import com.iwhalecloud.bss.kite.common.util.KiteStringUtils;
//import com.iwhalecloud.bss.kite.cucc.client.api.attr.ILocalQueryScenePersonInfoService;
//import com.iwhalecloud.bss.kite.cucc.client.dto.pos.KitePosAgentDTO;
//import com.iwhalecloud.bss.kite.cucc.client.dto.pos.KitePosAttrDTO;
//import com.iwhalecloud.bss.kite.cucc.client.dto.pos.KitePosDTO;
//import com.iwhalecloud.bss.kite.cucc.client.dto.pos.KitePosOrderDTO;
//import com.iwhalecloud.bss.kite.cucc.client.vo.scene.AgentInfoVO;
//import com.iwhalecloud.bss.kite.cucc.client.vo.scene.CuccCommonAttrVO;
//import com.iwhalecloud.bss.kite.cucc.client.vo.scene.SceneNewOfferSeneVO;
//import com.iwhalecloud.bss.kite.cucc.common.constant.LocalKeyConsts;
//import com.iwhalecloud.bss.kite.cucc.common.util.AssemblyAttrDtoUtils;
//import com.iwhalecloud.bss.kite.cucc.dataservice.cache.ExtOrderInfoCache;
//import com.iwhalecloud.bss.kite.manager.api.IQuerySceneInstService;
//import com.iwhalecloud.bss.kite.web.context.KiteWebContext;
//import com.iwhalecloud.bss.kite.web.service.accept.bo.AcceptContext;
//import com.iwhalecloud.bss.kite.web.service.accept.bo.SceneModule;
//import com.iwhalecloud.bss.kite.web.service.accept.handler.module.AbstractModuleHandler;
//import com.ztesoft.bss.common.util.SpringUtil;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.List;
//import java.util.Objects;
//import java.util.Optional;
//import java.util.stream.Collectors;
//
///**
// * <Description> 代理人信息 <br>
// *
// * @author zixin<br>
// */
//@Service
//public class AgentPersonInfoModuleHandler extends AbstractModuleHandler {
//
//    @Autowired
//    private ILocalQueryScenePersonInfoService queryScenePersonService;
//
//    @Autowired
//    private IQuerySceneInstService querySceneInstService;
//
//    @Override
//    public List<ModuleVO> execute(AcceptContext context, SceneModule sceneModule) {
//        List<InstAttrDTO> attrConfigs = queryScenePersonService
//            .listAgentPersonInfoAttrs(context.getAcceptRequest().getSceneInstId()).getResultObject().stream()
//            .filter(instAttrDTO -> LocalKeyConsts.KITE_ATTR_CONFIG_SHOW_TYPE_D.equals(instAttrDTO.getShowType()))
//            .collect(Collectors.toList());
//        List<CommonAttrVO> commonAttrList = AssemblyAttrDtoUtils.assemblyVO(attrConfigs);
//
//        AgentInfoVO agentInfoVO = new AgentInfoVO();
//        agentInfoVO.setAgentAttr(commonAttrList);
//        agentInfoVO.setAgentFlag(Optional.ofNullable(getAgentFlag()).orElse(KeyConsts.IFTRUE_F));
//        SceneNewOfferSeneVO sceneAccountInfoVo = (SceneNewOfferSeneVO) context.getSceneVo();
//        sceneAccountInfoVo.setAgentInfoVO(agentInfoVO);
//
//        return Collections.singletonList(agentInfoVO);
//    }
//
//    @Override
//    public List<ModuleVO> previewSceneVo(AcceptContext context, SceneModule sceneModule) {
//
//        if (!KeyConsts.IFTRUE_T.equals(getAgentFlag())) {
//            return Collections.EMPTY_LIST;
//        }
//        List<InstAttrDTO> attrConfigs = queryScenePersonService
//            .listAgentPersonInfoAttrs(context.getAcceptRequest().getSceneInstId()).getResultObject();
//        AgentInfoVO agentInfoVO = new AgentInfoVO();
//        agentInfoVO.setAgentAttr(AssemblyAttrDtoUtils.assemblyCommonVO(attrConfigs));
//        SceneNewOfferSeneVO sceneAccountInfoVo = (SceneNewOfferSeneVO) context.getSceneVo();
//        List<CommonAttrVO> cuccAttrList = new ArrayList<>();
//        List<CommonAttrVO> transferDisplayInfoAttrs = agentInfoVO.getAgentAttr();
//        if (KiteListUtils.isNotEmpty(transferDisplayInfoAttrs)) {
//            //设置预览模式
//            transferDisplayInfoAttrs.forEach((attr) -> {
//                attr.setAttrValueTypeId("TT");
//            });
//
//            String busiChangeScene = querySceneInstService
//                .getExtParameterValue(context.getSceneVo().getSceneInstId(), LocalKeyConsts.BUSI_CHANGE_SCENE);
//            if (KeyConsts.IFTRUE_T.equals(busiChangeScene)) {
//                cuccAttrList = this
//                    .getCuccCommonAttrVOList(transferDisplayInfoAttrs, context.getAcceptRequest().getSceneInstId());
//                transferDisplayInfoAttrs = cuccAttrList;
//            }
//        }
//        agentInfoVO.setAgentAttr(transferDisplayInfoAttrs);
//        sceneAccountInfoVo.setAgentInfoVO(agentInfoVO);
//        return Collections.singletonList(agentInfoVO);
//    }
//
//    //获取是否展示的标识
//    private String getAgentFlag() {
//        IQuerySceneInstService operateSceneInstService = SpringUtil.getBean(IQuerySceneInstService.class);
//        String agentFlag = operateSceneInstService
//            .getExtParameterValue(KiteWebContext.getContext().getCurrentSceneInstId(), "agentFlag");
//        return agentFlag;
//    }
//
//    private List<CommonAttrVO> getCuccCommonAttrVOList(List<CommonAttrVO> transferDisplayInfoAttrs,
//        String sceneInstId) {
//        List<CommonAttrVO> cuccAttrList = new ArrayList<>();
//        transferDisplayInfoAttrs.forEach(commonAttrVO -> {
//            CuccCommonAttrVO cuccCommonAttrVO = new CuccCommonAttrVO();
//            // 处理代理人变更的信息
//            this.dealAgentInfoOldValues(cuccCommonAttrVO, commonAttrVO, sceneInstId);
//            cuccAttrList.add(cuccCommonAttrVO);
//        });
//        return cuccAttrList;
//    }
//
//    private void dealAgentInfoOldValues(CuccCommonAttrVO cuccCommonAttrVO, CommonAttrVO commonAttrVO,
//        String sceneInstId) {
//        KiteBeanUtils.copyProperties(commonAttrVO, cuccCommonAttrVO);
//        KitePosDTO kitePosDTO = ExtOrderInfoCache.get(sceneInstId);
//        if (Objects.nonNull(kitePosDTO)) {
//            KitePosOrderDTO kitePosOrderDTO = kitePosDTO.getOrder();
//            List<KitePosAttrDTO> orderAttrs = Objects.nonNull(kitePosOrderDTO) ?
//                kitePosOrderDTO.getAttrs() :
//                new ArrayList<>();
//            List<KitePosAttrDTO> agentAttrs = orderAttrs.stream().filter((attr) -> "agent".equals(attr.getCode()))
//                .collect(Collectors.toList());
//            if (!KiteListUtils.isEmpty(agentAttrs)) {
//                KitePosAttrDTO agentAttr = agentAttrs.get(0);
//                KitePosAgentDTO agentDto = JSON.parseObject(agentAttr.getValue(), KitePosAgentDTO.class);
//                if ("agent_info_channelid".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentChannelId())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentChannelId());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//                else if ("agent_info_channelname".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentChannelName())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentChannelName());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//                else if ("agent_info_cardtype".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentIdType())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentIdType());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//                else if ("agent_info_cardnum".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentIdNo())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentIdNo());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//                else if ("agent_info_cardaddress".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentAddress())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentAddress());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//                else if ("agent_info_id".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentId())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentId());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//                else if ("agent_info_name".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentName())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentName());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//                else if ("agent_info_tel".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                    .isEqual(cuccCommonAttrVO.getValue(), agentDto.getAgentPhone())) {
//                    cuccCommonAttrVO.setOldValue(agentDto.getAgentPhone());
//                    cuccCommonAttrVO.setChangeFlag(true);
//                    return;
//                }
//            }
//        }
//    }
//}
